package com.atguigu.interpreter;

import java.util.HashMap;

/**
 * @program: design-patterns
 * @author: yangshen
 * @description: 抽象运算符号解释器（每个运算符号，都只和自己左右 两个数字有关系）
 * 但左右两个数字有可能也是一个解析的结果，无论何种类型，都是Expression类的实现类
 * @create: 2022-03-13 13:20
 **/
public class SymbolExpression extends Expression{

    protected Expression left;
    protected Expression right;

    /**
     * 构建左和右的表达式
     * @param left 左表达式
     * @param right 右表达式
     */
    public SymbolExpression(Expression left, Expression right) {
        this.left = left;
        this.right = right;
    }

    /**
     * 因为 SymbolExpression 是让其子类来实现（类图种的非终结类），因为这里的interpreter是一个默认实现
     * @param var hashMap {a=10, b=20}
     * @return
     */
    @Override
    public int interpreter(HashMap<String, Integer> var) {
        return 0;
    }
}
